import React, { Component } from "react";

// todo 高阶组件本质上是一个函数，这个函数需要接收一个组件作为参数，并且返回一个新组件

// todo 高阶组件可以给组件添加相同的结构,添加相同的属性等等
// todo 高阶组件作用就是增强组件的功能，以及进行复用
const hoc = (Comp) => {
  return class extends Component {
    render() {
      // console.log(this.props);
      // todo {...this.props}将这个组件接收到的所有的props，接着往下传
      return (
        <>
          <Comp count="3" {...this.props} />
        </>
      );
    }
  };
};

class App extends Component {
  render() {
    console.log(this.props);
    return (
      <>
        <h2>高阶组件</h2>
      </>
    );
  }
}

// const App2 = hoc(App);

export default hoc(App);
